package org.ainlolcat.ainscience.column;

import org.ainlolcat.Variable;
import org.ainlolcat.ainscience.column.threshold.Threshold;

import java.util.Collection;
import java.util.List;

/**
 * @author ainlolcat
 * Date: 11/3/11
 */
public interface Column extends Cloneable {

    public int size();

    public Collection<Threshold> getThresholds();
    public void setThresholds(Collection<Threshold> thresholds);

    public void addValues(List values);
    public void addValue(String value);

    public void setValues(List values);
    public boolean setValueAt(int rowNum, Object value);

    public Variable getCanonicalValue(int num);
    public Object getValue(int num);

    public boolean removeAt(int num);
    public void removeLast();

    public void setName(String name);
    public String getName();

    public Integer getType();
    public void setType(Integer type);

    public String getAxis();
    public  void setAxis(String axis);

    public boolean isNumeric();
    public double[] getDoubleRepresentation();

    //uses Object.equal method. so must work nice on String, Double, Integer and other )
    public int findIndex(Object val);

    public Column clone();
}
